package cz.vse.adventura.po1715.xforv00_forejt.hra;

import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pOTEVŘI;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pOTEVŘIpopis;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.SKRINKA;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.DOMA;

/*******************************************************************************
 * Instance třídy {@code PříkazOtevři} představují příkaz, který otevře předmět
 *
 * @author Vladimír Forejt
 */
public class PříkazOtevři extends APříkaz {



//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří instanci, která má na starost reakci na příkaz "otevři".
     * Syntaxe je "otevři předmět"
     */
    public PříkazOtevři()
    {
        super(pOTEVŘI, pOTEVŘIpopis);
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Otevře zadaný předmět; zkontroluje,
     * zda je zadán otevíraný předmět a zda tímto předmětem je skříňka
     *
     * @param parametry Jediným povoleným parametrem je skříňka
     * @return Text zpravy vypsane po porovedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        Hra h = Hra.getHra();

        if (parametry.length == 0)  {
            return "Je třeba říct, který předmět se má otevřít.";//==========>
        }
        if ((!parametry[0].equalsIgnoreCase(SKRINKA)) ||
            h.getActualPlace() != h.getPlace(DOMA) )
        {
            return "Otevřít je možno pouze skříňku doma"; //==========>
        }
        h.setActualPlace(h.getPlace(SKRINKA));
        return "Otevřel(a) jste skříňku";
    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//     /***************************************************************************
//      * Testovací metoda.
//      */
//     public static void test()
//     {
//         PříkazOtevři instance = new PříkazOtevři();
//     }
//     /** @param args Parametry příkazového řádku - nepoužívané. */
//     public static void main(String[] args)  {  test();  }
}
